package shujia.day09;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

/*
    List集合具有索引的概念，根据索引提供了List集合特有的一些功能：
        void add(int index,E element)
        E remove(int index)
        E get(int index)
        E set(int index,E element)
        ListIterator listIterator()

 */
public class ListDemo2 {
    public static void main(String[] args) {
        //借助ArrayList实现子类创建List接口的对象
        List list1 = new ArrayList();
        list1.add("hello");
        list1.add("world");
        list1.add("apple");
        list1.add("hadoop");
        list1.add("redis");
        list1.add("world"); // 集合的末尾处添加
        System.out.println("list1: " + list1);

        //[hello, world, apple, hadoop, redis, world]
        // void add(int index,Object element)
        list1.add(3,"数加");
        System.out.println("list1: " + list1);

        //[hello, world, apple, 数加, hadoop, redis, world]
        //Object remove(int index) 根据索引移除元素
//        System.out.println(list1.remove(10)); // 返回被删除的元素
//        System.out.println("list1: " + list1);

        // Object get(int index) 通过索引获取元素
//        System.out.println(list1.get(3));
//        System.out.println("list1: " + list1);

        // Object set(int index,E element) 根据索引修改值
//        System.out.println(list1.set(3, "shujia")); //返回索引位置上的旧值
//        System.out.println("list1: " + list1);

        // ListIterator listIterator() 是List集合专有的迭代器对象 要想倒着遍历，必须得先正着遍历一次
        ListIterator listIterator = list1.listIterator();

        while (listIterator.hasNext()){
            System.out.println(listIterator.next());
        }
        System.out.println("--------------------------------------");
//        while (listIterator.hasNext()){
//            System.out.println(listIterator.next());
//        }
        while (listIterator.hasPrevious()){
            System.out.println(listIterator.previous());
        }


    }
}
